import axios from 'axios';
import {sxtoken} from '@/api/user'
//axios.defaults.headers.common['Authorization'];
//创建了一个新的axios的实例
const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    // easy-mock服务挂了，暂时不使用了
    baseURL: 'http://localhost:5086/',//基地址
    timeout: 5000                                                   //请求超时 时间，以毫秒为单位
});

//interceptors:拦截器*
//定义一个请求拦截器：在请求发给api之前，先调用下面的代码
service.interceptors.request.use(
    function (config) {
        //在发送请求之前做些什么
        var token = sessionStorage.getItem("jwtToken");
        if (token != "") {
            config.headers.Authorization = 'Bearer ' + token
            return config;
        }
    },
    function (error) {
        console.log(1)
        //对请求错误做些什么
        return Promise.reject(error);
    }
);

//定义一个响应拦截器：在响应被返回之前，先调用下面的代码
service.interceptors.response.use(
    response => {
        if (response.status === 200) { //判断响应的结果状态码是不是200
            return response.data;
        } else {
            Promise.reject();//如果不是200，则报错
        }
    },
    error => {
        if(response.status===401)
        {
            const token = sessionStorage.getItem("RefreshToken");
            if(token){
                sxtoken({ refreshToken: token }).then(res=>{
                    sessionStorage.getItem("RefreshToken", res.RefreshToken)
                    sessionStorage.getItem("jwtToken", res.Token)
                })
            }
            else
            {
                this.$router.push('/login');
            }
        }
        console.log(error);
        return Promise.reject();
    }
);

export default service; //exprot导出 对象、方法、类
